****************************************************************************
* Nome do Arquivo: 		codigo_BEPS.do
* Data:					23/03/2020
* Autor: 				Fred Batista
* Prop�sito: 			An�lise do BEPS2010
* Dados: 				BEPSwaves123_wide.dta
* Output:			-	*/
****************************************************************************

* VARI�VEIS DO QUESTION�RIO NO BANCO

* educacao: edw1 edw2 edw3
* emprego: ocup4aw1 ocup4aw2
* sexo: q1w1 q1w2 q1w3
* income: q10w1, q10w2 q10w3
* partisanship: vb11w1 vb11w2 vb11w3
* bolsa familia: cct1braw1, cct1braw2, cct1braw3
* religion: q3cw1 q3cw2 q3cw3
* regiao: estratopri

* RECODIFICA��O

* indicaras de regi�o

tab estratopri, gen(region)

* educacao

gen ed1 = edw1
recode ed1 (88 98=.)

gen ed2 = edw2
recode ed2 (88 98=.)

gen ed3 = edw3
recode ed3 (88 98=.)

replace ed1 = ed1/17
replace ed2 = ed2/17
replace ed3 = ed3/17


* renda

gen renda1 = q10w1
recode renda1 (88 98=.)

gen renda2 = q10w2
recode renda2 (88 98=.)

gen renda3 = q10w3
recode renda3 (88 98=.)

replace renda1 = renda1/10
replace renda2 = renda2/10
replace renda3 = renda3/10

* sexo

gen sexo1 = 2 - q1w1

gen sexo2 = 2 - q1w2

gen sexo3 = 2 - q1w3

* partisanship

gen idpt1 = vb11w1
recode idpt1 (.=.) (1501=1) (else=0)

gen idpt2 = vb11w2
recode idpt2 (.=.) (1501=1) (else=0)

gen idpt3 = vb11w3
recode idpt3 (.=.) (1501=1) (else=0)

gen idpsdb1 = vb11w1
recode idpsdb1 (.=.) (1503=1) (else=0)

gen idpsdb2 = vb11w2
recode idpsdb2 (.=.) (1503=1) (else=0)

gen idpsdb3 = vb11w3
recode idpsdb3 (.=.) (1503=1) (else=0)

* bolsa familia

gen bolsa1 = cct1braw1
recode bolsa1 (2 88 98=0)

gen bolsa2 = cct1braw2
recode bolsa2 (2 88 98=0)

gen bolsa3 = cct1braw3
recode bolsa3 (2 88 98=0)

* catolico

gen catolico1 = q3cw1
recode catolico1 (.=.) (1=1) (else=0)

gen catolico2 = q3cw2
recode catolico2 (.=.) (1=1) (else=0)

gen catolico3 = q3cw3
recode catolico3 (.=.) (1=1) (else=0)

gen protestante1 = q3cw1
recode protestante1 (.=.) (2 5=1) (else=0)

gen protestante2 = q3cw2
recode protestante2 (.=.) (2 5=1) (else=0)

gen protestante3 = q3cw3
recode protestante3 (.=.) (2 5=1) (else=0)

* auto-localiza��o

gen id1 = l1w1
gen id2 = l1w2
gen id3 = l1w3

recode id1 id2 id3 (88 98=.)

replace id1 = (id1 - 1)/9
replace id2 = (id2 - 1)/9
replace id3 = (id3 - 1)/9

* loc_resp

gen loc_resp1 = l1w1
gen loc_resp2 = l1w2
gen loc_resp3 = l1w3

recode loc_resp1 loc_resp2 loc_resp3 (.=.) (88 98=0) (else=1)

* localiza��o de Dilma

gen dilma_id2 = l1cw2 
gen dilma_id3 = l1cw3 

recode dilma_id2 dilma_id3 (88 98=.)

* localiza��o de Serra

gen serra_id2 = l1bw2 
gen serra_id3 = l1bw3 

recode serra_id2 serra_id3 (88 98=.)

* avalia��o econ�mica

gen eco1 = soct1w1
gen eco2 = soct1w2
gen eco3 = soct1w3

recode eco1 eco2 eco3 (88 98 99=.)

replace eco1 = (eco1 - 1)/4
replace eco2 = (eco2 - 1)/4
replace eco3 = (eco3 - 1)/4


* voto

gen dilma1 = vb20braw1
gen dilma2 = vb20braw2
gen dilma3 = vb20braw3

recode dilma1 dilma2 dilma3 (1=1)  (88 98=.) (else=0) 

gen serra1 = vb20braw1
gen serra2 = vb20braw2
gen serra3 = vb20braw3

recode serra1 serra2 serra3 (2=1) (88 98=.) (else=0)

gen voto1 = vb20braw1
gen voto2 = vb20braw2
gen voto3 = vb20braw3

recode voto1 voto2 voto3 (1=1) (2=2) (3 4 5=0) (88 98=.)

gen voto1b = vb20braw1
gen voto2b = vb20braw2
gen voto3b = vb20braw3

recode voto1b voto2b voto3b (1=0) (2=1) (3 4 5 88 98=.)

* conhecimento

gen uspres = gl1w1
gen numbprovince = gl3w1
gen timeterm = gl4w1

recode uspres numbprovince timeterm (1=1) (else=0)

gen conhecimento = (uspres + numbprovince + timeterm)/3

** vari�veis de aprendizado

gen loc_dilma2 = dilma_id2
recode loc_dilma2 (.=0) (else=1)

gen loc_dilma3 = dilma_id3
recode loc_dilma3 (.=0) (else=1)

gen loc_serra2 = serra_id2
recode loc_serra2 (.=0) (else=1)

gen loc_serra3 = serra_id3
recode loc_serra3 (.=0) (else=1)

gen pos_dilmaserra2 = 0 if l1cw2!=. & l1bw2!=.
replace pos_dilmaserra2=1 if dilma_id2 < serra_id2

gen pos_dilmaserra3 = 0 if l1cw3!=. & l1bw3!=.
replace pos_dilmaserra3=1 if dilma_id3 < serra_id3

* knew before

gen knewbefore=0 if pos_dilmaserra2!=. & pos_dilmaserra3!=.
replace knewbefore=1 if pos_dilmaserra2==1 & pos_dilmaserra3==1

* learned from

gen learnedfrom=0 if pos_dilmaserra2!=. & pos_dilmaserra3!=.
replace learnedfrom=1 if pos_dilmaserra2==0 & pos_dilmaserra3==1

* partially learned (not done)

* never learned

gen neverlearned=0 if pos_dilmaserra2!=. & pos_dilmaserra3!=.
replace neverlearned=1 if pos_dilmaserra2==0 & pos_dilmaserra3==0

* forgot

gen forgot=0 if pos_dilmaserra2!=. & pos_dilmaserra3!=.
replace forgot=1 if pos_dilmaserra2==1 & pos_dilmaserra3==0

* learning as nominal

gen learning =.
replace learning = 0 if forgot==1
replace learning = 1 if neverlearned==1
replace learning = 2 if learnedfrom==1
replace learning = 3 if knewbefore==1


*peso - weight_3wave



* ANALISES

* correla��es entre opini�es no tempo - toda a amostra

pwcorr id1 id2 id3 [aweight=weight_3wave], sig

pwcorr eco1 eco2 eco3 [aweight=weight_3wave], sig

pwcorr dilma1 dilma2 dilma3 [aweight=weight_3wave], sig

pwcorr serra1 serra2 serra3 [aweight=weight_3wave], sig


* correla��es entre opini�es no tempo - baixo conhecimento

pwcorr id1 id2 id3 [aweight=weight_3wave] if conhecimento==0, sig

pwcorr eco1 eco2 eco3 [aweight=weight_3wave] if conhecimento==0, sig

pwcorr dilma1 dilma2 dilma3 [aweight=weight_3wave] if conhecimento==0, sig

pwcorr serra1 serra2 serra3 [aweight=weight_3wave] if conhecimento==0, sig


* correla��es entre opini�es no tempo - alto conhecimento

pwcorr id1 id2 id3 [aweight=weight_3wave] if conhecimento==1, sig

pwcorr eco1 eco2 eco3 [aweight=weight_3wave] if conhecimento==1, sig

pwcorr dilma1 dilma2 dilma3 [aweight=weight_3wave] if conhecimento==1, sig

pwcorr serra1 serra2 serra3 [aweight=weight_3wave] if conhecimento==1, sig


* correla��es entre opini�es no tempo - sem requisitos

pwcorr id1 id2 id3 [aweight=weight_3wave] if learning<2, sig

pwcorr eco1 eco2 eco3 [aweight=weight_3wave] if learning<2, sig

pwcorr dilma1 dilma2 dilma3 [aweight=weight_3wave] if learning<2, sig

pwcorr serra1 serra2 serra3 [aweight=weight_3wave] if learning<2, sig

* correla��es entre opini�es no tempo - com requisitos

pwcorr id1 id2 id3 [aweight=weight_3wave] if learning>1, sig

pwcorr eco1 eco2 eco3 [aweight=weight_3wave] if learning>1, sig

pwcorr dilma1 dilma2 dilma3 [aweight=weight_3wave] if learning>1, sig

pwcorr serra1 serra2 serra3 [aweight=weight_3wave] if learning>1, sig

* estabilidade da ideologia ao longo do tempo, intera��o com conhecimento

reg id3 c.id2##c.conhecimento [aweight=weight_3wave]



* voting models (models won�t converge with idpsdb)

mprobit voto3 id3 eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri [pweight=weight_3wave], base(1)

mprobit voto2 id2 eco2 idpt2 ed2 renda2 sexo2 catolico2 protestante2 bolsa2 i.estratopri [pweight=weight_3wave], base(1)

mprobit voto1 id1 eco1 idpt1 ed1 renda1 sexo1 catolico1 protestante1 bolsa1 i.estratopri [pweight=weight_3wave], base(1)

probit voto3b id3 eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri [pweight=weight_3wave]

probit voto2b id2 eco2 idpt2 ed2 renda2 sexo2 catolico2 protestante2 bolsa2 i.estratopri [pweight=weight_3wave]

probit voto1b id1 eco1 idpt1 ed1 renda1 sexo1 catolico1 protestante1 bolsa1 i.estratopri [pweight=weight_3wave]


* levels of knowledge and patterns of learning

mlogit learning conhecimento [pweight=weight_3wave], base(0)

mlogit learning ed3 [pweight=weight_3wave], base(0)


* test of learning

* all

probit voto2b id2 [pweight=weight_3wave]

probit voto3b id3 [pweight=weight_3wave]

* knewbefore

probit voto2b id2 [pweight=weight_3wave] if knewbefore==1

probit voto3b id3 [pweight=weight_3wave] if knewbefore==1

*learned from

probit voto2b id2 [pweight=weight_3wave] if learnedfrom==1

probit voto3b id3 [pweight=weight_3wave] if learnedfrom==1

* never learned

probit voto2b id2 [pweight=weight_3wave] if neverlearned==1

probit voto3b id3 [pweight=weight_3wave] if neverlearned==1

* forgot

probit voto2b id2 [pweight=weight_3wave] if forgot==1

probit voto3b id3 [pweight=weight_3wave] if forgot==1



* tests of opinion change - granger causality tests

* all sample

probit voto3b id2 i.voto2b [pweight=weight_3wave]

oprobit id3 id2 i.voto2b [pweight=weight_3wave]

* less knowledgeable

probit voto3b id2 i.voto2b [pweight=weight_3wave] if conhecimento<.5

oprobit id3 id2 i.voto2b [pweight=weight_3wave] if conhecimento<.5

* more knowledgeable

probit voto3b id2 i.voto2b [pweight=weight_3wave] if conhecimento>.5

oprobit id3 id2 i.voto2b [pweight=weight_3wave] if conhecimento>.5


* direct effects without interaction with controls

probit voto3b c.id2 i.voto2b c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri  [pweight=weight_3wave]

oprobit id3 c.id2 i.voto2b c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri [pweight=weight_3wave]

* interaction and full controls

probit voto3b c.id2##c.conhecimento i.voto2b##c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri  [pweight=weight_3wave]

oprobit id3 c.id2##c.conhecimento i.voto2b##c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri [pweight=weight_3wave]


* only among the voters who fill the requisites (IN PAPER)

probit voto3b c.id2 i.voto2b c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri if knewbefore==1 | learnedfrom==1  [pweight=weight_3wave]

oprobit id3 c.id2 i.voto2b c.conhecimento eco3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri if knewbefore==1 | learnedfrom==1 [pweight=weight_3wave]


* test with economic voting - full sample

probit voto3b c.eco2 i.voto2b c.conhecimento id3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri  [pweight=weight_3wave]

oprobit eco3 c.eco2 i.voto2b c.conhecimento id3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri [pweight=weight_3wave]

* test with economic voting - only requisites

probit voto3b c.eco2 i.voto2b c.conhecimento id3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri if knewbefore==1 | learnedfrom==1 [pweight=weight_3wave]

oprobit eco3 c.eco2 i.voto2b c.conhecimento id3 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 i.estratopri if knewbefore==1 | learnedfrom==1 [pweight=weight_3wave]


***

gen inwave1 = l1w1
recode inwave1 (.=0) (else=1)

gen inwave2 = l1w2
recode inwave2 (.=0) (else=1)

gen inwave3 = l1w3
recode inwave3 (.=0) (else=1)


*** non recursive model

* sophisticated - no controls

 sem (voto3b <- id3 voto2b) (id3 <- voto3b id2) if knewbefore==1 | learnedfrom==1 [pweight=weight_3wave], cov(voto2b*id2) meth(ml) vce(robust)

* sophisticated - controls (IN PAPER)

 sem (voto3b <- id3 voto2b idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 region2 region3 region4 region5) (id3 <- voto3b id2 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 region2 region3 region4 region5) if knewbefore==1 | learnedfrom==1 [pweight=weight_3wave], cov(voto2b*id2) meth(ml) vce(robust)


* all - no controls

 sem (voto3b <- id3 voto2b) (id3 <- voto3b id2) [pweight=weight_3wave], cov(voto2b*id2) meth(ml) vce(robust)

* all - controls

 sem (voto3b <- id3 voto2b idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 region2 region3 region4 region5) (id3 <- voto3b id2 idpt3 ed3 renda3 sexo3 catolico3 protestante3 bolsa3 region2 region3 region4 region5) [pweight=weight_3wave], cov(voto2b*id2) meth(ml) vce(robust)
